Python ব্যবহার করে একটি basic blockchain তৈরি করা একটি চমৎকার প্র্যাকটিস প্রোজেক্ট। এই প্রোজেক্টের মাধ্যমে আপনি blockchain-এর মৌলিক ধারণা, যেমন ব্লক তৈরি, মাইনিং, এবং consensus mechanism ইত্যাদি সম্পর্কে জানতে পারবেন। নিচে একটি basic blockchain তৈরির জন্য একটি স্টেপ-বাই-স্টেপ কোড উদাহরণ দেওয়া হলো।
প্রথমে, আমরা hashlib
এবং datetime
মডিউল ব্যবহার করবো ব্লকের hash এবং timestamp তৈরি করতে।
import hashlib
import datetime
# ব্লক ডিফাইন করার জন্য একটি ক্লাস তৈরি করা হলো
class Block:
def __init__(self, index, previous_hash, timestamp, data, nonce=0):
self.index = index
self.previous_hash = previous_hash
self.timestamp = timestamp
self.data = data
self.nonce = nonce
self.hash = self.calculate_hash()
# ব্লকের hash হিসাব করার ফাংশন
def calculate_hash(self):
block_data = (str(self.index) + str(self.previous_hash) +
str(self.timestamp) + str(self.data) + str(self.nonce))
return hashlib.sha256(block_data.encode()).hexdigest()
# প্রুফ অফ ওয়ার্ক ফাংশন
def mine_block(self, difficulty):
# টার্গেট ভ্যালু difficulty অনুযায়ী সেট করা হচ্ছে
target = "0" * difficulty
while self.hash[:difficulty] != target:
self.nonce += 1
self.hash = self.calculate_hash()
print(f"Block mined: {self.hash}")
# ব্লকচেইন ডিফাইন করার জন্য একটি ক্লাস তৈরি করা হলো
class Blockchain:
def __init__(self):
self.chain = [self.create_genesis_block()]
self.difficulty = 4
# জেনেসিস ব্লক তৈরি করার ফাংশন
def create_genesis_block(self):
return Block(0, "0", datetime.datetime.now(), "Genesis Block")
# চেইনে নতুন ব্লক যোগ করার ফাংশন
def add_block(self, new_block):
new_block.previous_hash = self.chain[-1].hash
new_block.mine_block(self.difficulty)
self.chain.append(new_block)
# ব্লকচেইন প্রিন্ট করার ফাংশন
def display_chain(self):
for block in self.chain:
print(f"Index: {block.index}")
print(f"Timestamp: {block.timestamp}")
print(f"Data: {block.data}")
print(f"Hash: {block.hash}")
print(f"Previous Hash: {block.previous_hash}\n")
# মেইন ফাংশন
if __name__ == "__main__":
# ব্লকচেইন তৈরি করা হচ্ছে
blockchain = Blockchain()
# নতুন ব্লক যোগ করা হচ্ছে
blockchain.add_block(Block(1, "", datetime.datetime.now(), "Block 1 Data"))
blockchain.add_block(Block(2, "", datetime.datetime.now(), "Block 2 Data"))
blockchain.add_block(Block(3, "", datetime.datetime.now(), "Block 3 Data"))
# ব্লকচেইন দেখানো হচ্ছে
blockchain.display_chain()
Block ক্লাস:
calculate_hash()
মেথড ব্লকের hash হিসাব করে এবং mine_block()
মেথড ব্লক মাইন করে (Proof of Work পদ্ধতি ব্যবহার করে)।Blockchain ক্লাস:
add_block()
মেথড নতুন ব্লক যোগ করে এবং পূর্বের ব্লকের hash নিয়ে ব্লকের চেইন তৈরি করে।display_chain()
মেথড সম্পূর্ণ ব্লকচেইন প্রদর্শন করে।Main Function:
কোডটি রান করার পর আপনি এমন একটি আউটপুট পাবেন যেখানে প্রতিটি ব্লকের তথ্য প্রদর্শিত হবে, যেমন:
Index: 0
Timestamp: 2024-10-22 12:00:00.000000
Data: Genesis Block
Hash: [জেনেসিস ব্লকের হ্যাশ]
Previous Hash: 0
Index: 1
Timestamp: 2024-10-22 12:01:00.000000
Data: Block 1 Data
Hash: [ব্লক ১ এর হ্যাশ]
Previous Hash: [জেনেসিস ব্লকের হ্যাশ]
... (অন্যান্য ব্লকগুলো)
আরও দেখুন...